home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / FinderGrok / osa stuff / Str255.cp < prev    next >
Text File  |  2000-06-23  |  995b  |  60 lines

  1. #include "Str255.h"
  2.  
  3. #include <LString.h>
  4.  
  5. std::string
  6. AsString(ConstStr255Param in)
  7. {
  8.     return std::string(reinterpret_cast<const char*>(&in[1]), in[0]);
  9. }
  10.  
  11. std::string
  12. AsString(const LString& in)
  13. {
  14.     ConstStr255Param str255(in);
  15.     return AsString(str255);
  16. }
  17.  
  18. void
  19. CopyToStr255(const std::string& in, Str255 out)
  20. {
  21.     unsigned size = in.size();
  22.     if (size > 255)
  23.         size = 255;
  24.     out[0] = size;
  25.     in.copy(reinterpret_cast<char *>(&out[1]), size);
  26. }
  27.  
  28. Str255Converter
  29. AsStr255(const std::string& in)
  30. {
  31.     return in;
  32. }
  33.  
  34. Str255Converter::Str255Converter(const std::string& in)
  35. {
  36.     CopyToStr255(in, mStr255);
  37. }
  38.  
  39. Str255Converter::operator const unsigned char*() const
  40. {
  41.     return mStr255;
  42. }
  43.  
  44. std::string
  45. LoadString(ResIDT resourceID, int index)
  46. {
  47.     Str255 theString;
  48.     GetIndString(theString, resourceID, index);
  49.     ThrowIfResError_();
  50.     return AsString(theString);
  51. }
  52.  
  53. std::string
  54. LoadTextResource(ResIDT resourceID)
  55. {    
  56.     StResource r('TEXT', resourceID);
  57.     HLock(r);
  58.     return std::string(*Handle(r), GetHandleSize(r));
  59. }
  60.